package com.lanswon.qzsmk.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.lanswon.qzsmk.model.CardProdunctDefinition;
import com.lanswon.qzsmk.vo.CardProdunctVo;

/**
 * 新增履历
 * 工程项目名称：青州市民卡核心系统
 * 方法名：卡参数管理模块-CardProdunctDefinitionMapper
 * 版本： ver 1.0  初版
 * 创建日期：20190319
 * 创建人：鱼洲杰
 */
public interface CardProdunctDefinitionMapper {
	
	/**
	 * 根据卡产品ID获取卡产品定义
	 * @param cardProductCode
	 * @return
	 */
	List<CardProdunctDefinition> queryCardProdunctByIDS(List idList);
	
	/**
	 * 根据卡产品ID获取卡产品定义
	 * @param cardProductCode
	 * @return
	 */
	CardProdunctDefinition queryCardProdunctByID(String id);
	
	/**
	 * 根据卡产品代码获取卡产品定义
	 * @param cardProductCode
	 * @return
	 */
	CardProdunctDefinition queryCardPCode(String cardProductCode);
	
	/**
	 * 根据卡类型代码获取卡产品
	 * @param cardProductCode
	 * @return
	 */
	CardProdunctDefinition queryCardCode(String CardTypeCode);
	/**
	 * 根据卡产品名称获取卡类型
	 * @param cardProductCode
	 * @return
	 */
	CardProdunctDefinition queryCardPCodeByCardProductName(String cardProductName);
	
	/**
	 * 获取卡产品通过有效状态
	 * @return
	 */
	List<CardProdunctDefinition> queryCardProdunctDefinitionByValidStatus(String validStatus);

	/**
	 * 保存
	 * @param record
	 * @return
	 */
    int insert(CardProdunctDefinition cpd);

    /**
	 * 根据卡类型代码修改卡产品信息
	 * @param cardTaskNo
	 */
    void modifyCardTaskByCityCode(CardProdunctVo cpv);
    /**
	 * 启用/停用 卡产品
	 * @param cardTaskNo
	 */
    void startProduct(CardProdunctDefinition cpv);
    
    /**
     * 查询
     */
    List<CardProdunctDefinition> queryAllCardProdunct(CardProdunctVo cpv);
    
    /**
	 * 根据卡产品名称获取卡产品
	 * @param cardProductCode
	 * @return
	 */
	CardProdunctDefinition queryCardProductByName(String cardpName);
	
	/**
	 * 根据卡产品名称代码获取卡产品名称
	 * @param cardCodeList 卡产品代码列表
	 * @return
	 */
	List<CardProdunctDefinition> queryCardNameByCode(@Param("cardCodeList")List<String> cardCodeList);
	
	/**
	 * 根据卡发行商查询
	 * @param cardPublisherCode
	 * @return
	 */
	List<CardProdunctDefinition> queryCardProdunctDefinitionByCardPublisherCode(String cardPublisherCode);
	
	/**
	 * 查询最大的ID
	 * @param 
	 * @return
	 */
    String queryMaxCardProductId();
    
    /**
     * 查询互联网能办理的卡产品
     * @param cardTypeCode
     * @param cardProperty
     * @param status 卡产品启用状态
     * @return
     */
    List<CardProdunctDefinition> queryAvailableCardProdunctDefinitionByInternet(String cardTypeCode,String cardProperty,String status);


}